-----------------------------------------
--- Denotational: Adding print to IMP ---
-----------------------------------------

Suggested steps to follow in order to extend the oringinal denotational
semantics of IMP in Maude to include a print statement:

1) Modify imp-denotational.maude: Include output.maude at the begining, and 
   add Maude commands for executing sumPrintPgm at the end.

2) Run imp-denotational.maude: Everything working before should still work;
   sumPrintPgm should be partially reduced to some functional representation,
   which cannot be reduced all the way through because of the missing
   denotation of print (note the subterms of the form [[print x]]).

3) Modify imp-semantics-denotational.maude:
   a) Include module OUTPUT in module IMP-SEMANTICS-DENOTATIONAL.
   b) Make sure that the denotation of each statement is now a (partial)
      function from states to pairs (state,output); modify the existing
	  equations giving the denotation of IMP statement constructs to take
	  into account the output buffer.
	  
4) Run imp-denotational.maude: Everything working before should still work,
   and should include and empty output buffer in the result pairs;
   sumPrintPgm should still get stuck with missing denotations for print.

5) Add the actual denotational semantics of print (one equation).

6) Run imp-denotational.maude and check that all programs evaluate properly.


------------------------------
--- Observations, thoughts ---
------------------------------

1) The addition of pairs as results of denotation functions for statements
   changed the implicit types of these functions; one has to make sure that
   projection functions are used to extract the state and the output.

2) All equations corresponding to the denotations of statements had to change.
